home *** CD-ROM | disk | FTP | other *** search
-
- { Reset status and pointer variables in track data block
- }
- procedure reset_track_data(var tdt:track_data_block);
- begin
- with tdt do
- begin
- tds_ptr:=1;
- edat:=false;
- curr.running_status:=0;
- curr.event_type:=UNKNOWN;
- end;
- end;
-
- { Load track data stream from user
- specified file into track data block
- }
- procedure load_track_data(var tdt:track_data_block);
- var
- tdf : File;
- tdfn : string[FILENAME_LEN];
- begin
- reset_track_data(tdt);
- write('Track data filename: ');
- readln(tdfn);
- assign(tdf,tdfn);
- reset(tdf);
- blockread(tdf,tdt.tds,TRACK_DATAFILE_SIZE div RECORD_LEN);
- close(tdf);
- end;
-
- { Save track data stream from track
- data block to user specified file
- }
- procedure save_track_data(tdt:track_data_block);
- var
- tdf : File;
- tdfn : string[FILENAME_LEN];
- begin
- write('Track data filename: ');
- readln(tdfn);
- assign(tdf,tdfn);
- rewrite(tdf);
- blockwrite(tdf,tdt.tds,TRACK_DATAFILE_SIZE div RECORD_LEN);
- close(tdf);
- end;
-
- { Return current track data byte from track data block
- }
- function this_byte(tdt:track_data_block):byte;
- begin
- this_byte:=tdt.tds[tdt.tds_ptr];
- end;
-
- { Advance pointer to next track data byte
- in track data block
- }
- procedure advance(var tdt:track_data_block);
- begin
- tdt.tds_ptr:=tdt.tds_ptr+1;
- end;
-
- { Convert byte to hexadecimal ASCII string
- }
- function itox(i:byte): hex_str;
- begin
- itox[0]:=chr(2);
- itox[1]:=DIGITS[i div 16];
- itox[2]:=DIGITS[i mod 16];
- end;
-
- { Dump track data stream in hexadecimal format
- }
- procedure dump_track_data(var tdt:track_data_block);
- label
- return;
- var
- n,st,off : integer;
- begin
- writeln('Track Data Stream Dump...');
- writeln;
- write(' ');
- for n:=0 to 15 do
- write(itox(n):4);
- writeln;
- n:=0;
- while (n < TRACK_DATAFILE_SIZE div 16) do
- begin
- st:=n*16;
- write(itox(st div 256):2,itox(st mod 256):2,' ');
- for off:=0 to 15 do
- begin
- write(itox(ord(tdt.tds[st+off+1])):4);
- if (tdt.tds[st+off+1] = DATA_END) then
- goto return;
- end;
- writeln;
- n:=n+1;
- end;
- return:
- writeln;
- end;
-
- f (tdt.tds[st+off+1] = DATA_END) then
- goto return;
- end;
- writeln;
- n:=n+1;
- end;
- re